package com.sunwayworld.basemodule.rm.train.exam.bean;

import java.time.LocalDateTime;

import org.springframework.format.annotation.DateTimeFormat;

import com.alibaba.fastjson.annotation.JSONField;
import com.sunwayworld.framework.data.annotation.Id;
import com.sunwayworld.framework.data.annotation.NotNull;
import com.sunwayworld.framework.data.annotation.Table;
import com.sunwayworld.framework.data.annotation.Transient;
import com.sunwayworld.framework.support.domain.AbstractInsertable;
import com.sunwayworld.framework.support.domain.Activatable;
import com.sunwayworld.framework.support.domain.Insertable;

/**
 * 试卷
 * 
 * @author zhangpf 2020年3月9日
 *
 */
@Table("T_CORE_EXAM")
public class LimsCoreExamBean extends AbstractInsertable<Long> implements Insertable<Long>, Activatable<Long> {

    @Transient
    private static final long serialVersionUID = -7584442616514037164L;

    @Id
    private Long id;// 主键

    private String examName; // 试卷名称

    private String questionMethod; // 组卷方式(T_CORE_CODE random:系统随机/manual:人工组卷)

    private Long examTmplId; // 试卷模板ID

    // 考试开始时间、结束时间、考试时长已转移到T_CORE_EXAM_PAPER表
    // T_CORE_EXAM表的对应三个字段已经删除，bean保留备用
    // ----
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime examBeginTime; // 考试开始时间

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime examEndTime; // 考试结束时间

    @NotNull(defaultValue = "0")
    private Long examDuration; // 考试时长
    // ----

    private String examCategory; // 试卷类别(“安全培训”、“理论培训”,可扩展维护;不能为空。与题库管理中“题目类别”相同数据源。)

    @NotNull(defaultValue = "0")
    private Long singleChoiceQty; // 单选题个数

    @NotNull(defaultValue = "0")
    private Long multipleChoiceQty; // 多选题个数

    @NotNull(defaultValue = "0")
    private Long completionQty; // 填空题个数

    @NotNull(defaultValue = "0")
    private Long judgementQty; // 判断题个数

    @NotNull(defaultValue = "0")
    private Long shortAnswerQty; // 简答题个数

    private Long tmplSingleChoiceQty; // 模板单选题个数

    private Long tmplMultipleChoiceQty; // 模板多选题个数

    private Long tmplCompletionQty; // 模板填空题个数

    private Long tmplJudgementQty; // 模板判断题个数

    private Long tmplShortAnswerQty; // 模板简答题个数

    private String lastUpdatedById; // 维护人编码

    private String lastUpdatedByName; // 维护人名称

    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastUpdatedTime; // 维护时间

    @NotNull(defaultValue = "0")
    private String activatedFlag; // 启用标志

    private String activatedById; // 启用人编码

    private String activatedByName; // 启用人名称
    
    @JSONField(format = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime activatedTime; // 启用时间

    private String createdById; // 制单人编码
    private String createdByName;// 制单人名称
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdTime; // 制单时间
    private String createdByOrgId; // 制单人单位编码
    private String createdByOrgName; // 制单人单位名称
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getExamName() {
        return examName;
    }
    public void setExamName(String examName) {
        this.examName = examName;
    }
    public String getQuestionMethod() {
        return questionMethod;
    }
    public void setQuestionMethod(String questionMethod) {
        this.questionMethod = questionMethod;
    }
    public Long getExamTmplId() {
        return examTmplId;
    }
    public void setExamTmplId(Long examTmplId) {
        this.examTmplId = examTmplId;
    }
    public LocalDateTime getExamBeginTime() {
        return examBeginTime;
    }
    public void setExamBeginTime(LocalDateTime examBeginTime) {
        this.examBeginTime = examBeginTime;
    }
    public LocalDateTime getExamEndTime() {
        return examEndTime;
    }
    public void setExamEndTime(LocalDateTime examEndTime) {
        this.examEndTime = examEndTime;
    }
    public Long getExamDuration() {
        return examDuration;
    }
    public void setExamDuration(Long examDuration) {
        this.examDuration = examDuration;
    }
    public String getExamCategory() {
        return examCategory;
    }
    public void setExamCategory(String examCategory) {
        this.examCategory = examCategory;
    }
    public Long getSingleChoiceQty() {
        return singleChoiceQty;
    }
    public void setSingleChoiceQty(Long singleChoiceQty) {
        this.singleChoiceQty = singleChoiceQty;
    }
    public Long getMultipleChoiceQty() {
        return multipleChoiceQty;
    }
    public void setMultipleChoiceQty(Long multipleChoiceQty) {
        this.multipleChoiceQty = multipleChoiceQty;
    }
    public Long getCompletionQty() {
        return completionQty;
    }
    public void setCompletionQty(Long completionQty) {
        this.completionQty = completionQty;
    }
    public Long getJudgementQty() {
        return judgementQty;
    }
    public void setJudgementQty(Long judgementQty) {
        this.judgementQty = judgementQty;
    }
    public Long getShortAnswerQty() {
        return shortAnswerQty;
    }
    public void setShortAnswerQty(Long shortAnswerQty) {
        this.shortAnswerQty = shortAnswerQty;
    }
    public Long getTmplSingleChoiceQty() {
        return tmplSingleChoiceQty;
    }
    public void setTmplSingleChoiceQty(Long tmplSingleChoiceQty) {
        this.tmplSingleChoiceQty = tmplSingleChoiceQty;
    }
    public Long getTmplMultipleChoiceQty() {
        return tmplMultipleChoiceQty;
    }
    public void setTmplMultipleChoiceQty(Long tmplMultipleChoiceQty) {
        this.tmplMultipleChoiceQty = tmplMultipleChoiceQty;
    }
    public Long getTmplCompletionQty() {
        return tmplCompletionQty;
    }
    public void setTmplCompletionQty(Long tmplCompletionQty) {
        this.tmplCompletionQty = tmplCompletionQty;
    }
    public Long getTmplJudgementQty() {
        return tmplJudgementQty;
    }
    public void setTmplJudgementQty(Long tmplJudgementQty) {
        this.tmplJudgementQty = tmplJudgementQty;
    }
    public Long getTmplShortAnswerQty() {
        return tmplShortAnswerQty;
    }
    public void setTmplShortAnswerQty(Long tmplShortAnswerQty) {
        this.tmplShortAnswerQty = tmplShortAnswerQty;
    }
    public String getLastUpdatedById() {
        return lastUpdatedById;
    }
    public void setLastUpdatedById(String lastUpdatedById) {
        this.lastUpdatedById = lastUpdatedById;
    }
    public String getLastUpdatedByName() {
        return lastUpdatedByName;
    }
    public void setLastUpdatedByName(String lastUpdatedByName) {
        this.lastUpdatedByName = lastUpdatedByName;
    }
    public LocalDateTime getLastUpdatedTime() {
        return lastUpdatedTime;
    }
    public void setLastUpdatedTime(LocalDateTime lastUpdatedTime) {
        this.lastUpdatedTime = lastUpdatedTime;
    }
    public String getActivatedFlag() {
        return activatedFlag;
    }
    public void setActivatedFlag(String activatedFlag) {
        this.activatedFlag = activatedFlag;
    }
    public String getActivatedById() {
        return activatedById;
    }
    public void setActivatedById(String activatedById) {
        this.activatedById = activatedById;
    }
    public String getActivatedByName() {
        return activatedByName;
    }
    public void setActivatedByName(String activatedByName) {
        this.activatedByName = activatedByName;
    }
    public LocalDateTime getActivatedTime() {
        return activatedTime;
    }
    public void setActivatedTime(LocalDateTime activatedTime) {
        this.activatedTime = activatedTime;
    }
    public String getCreatedById() {
        return createdById;
    }
    public void setCreatedById(String createdById) {
        this.createdById = createdById;
    }
    public String getCreatedByName() {
        return createdByName;
    }
    public void setCreatedByName(String createdByName) {
        this.createdByName = createdByName;
    }
    public LocalDateTime getCreatedTime() {
        return createdTime;
    }
    public void setCreatedTime(LocalDateTime createdTime) {
        this.createdTime = createdTime;
    }
    public String getCreatedByOrgId() {
        return createdByOrgId;
    }
    public void setCreatedByOrgId(String createdByOrgId) {
        this.createdByOrgId = createdByOrgId;
    }
    public String getCreatedByOrgName() {
        return createdByOrgName;
    }
    public void setCreatedByOrgName(String createdByOrgName) {
        this.createdByOrgName = createdByOrgName;
    }
}